In a cloud computing environment, computing is delivered as a service rather than a product, whereby shared resources, software and information are provided to computers and other devices as a metered service over a network, such as the Internet. In such an environment, computation, software, data access and storage services are provided to users that do not require knowledge of the physical location and configuration of the system that delivers the services.
The cloud computing environment may be deployed in a “hybrid cloud” topology, which is composed of two or more clouds, such as a private cloud and a public cloud, that remain distinct entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).
In the hybrid cloud topology, “cloud bursting” or “capacity scale out” may occur when an application workload (referring to the amount of processing that a hardware component has been given to do at a given time) experiences a peak load condition. “Cloud bursting” or “capacity scale out” refers to adding additional capacity, such as on the public cloud, to service the application workload. For example, in the hybrid cloud topology consisting of a private cloud and a public cloud, the private cloud may be running low on resources or needs to reserve the resources to service another higher priority workload. As a result, additional resources, such as servers to run virtual machines, may need to be utilized on the public cloud to help service the application workload. When a workload scales out to public cloud resources, a portion of the workload may be running in the private cloud and another portion of the workload may be running in the public cloud. Virtual machines servicing such a workload that are running in the public cloud will likely need to communicate with the virtual machines in the private cloud in order to complete request transactions. This cross-cloud communication (network input/output communications between the virtual machines on different clouds) is not ideal because the external link between the public/private clouds is slower and less reliable than internal links within a cloud thereby diminishing runtime performance for the application workload.
Unfortunately, there is not currently a means for minimizing the network input/output communications between the two cloud environments (i.e., the private and public clouds) during “cloud bursting” or “capacity scale out” to optimize runtime performance of the application workload.